package com.jt.controller;

import com.jt.pojo.User;
import com.jt.service.UserService;
import com.jt.service.UserServiceImpl;
import com.jt.vo.PageResult;
import com.jt.vo.SysResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@CrossOrigin
//跨域请求的注解
@RequestMapping("/user")
public class UserController {
    @Autowired
    private UserService service;

    /*项目测试，查询所有用户user表的数据
    * url ：http://localhost:8091/findAll
    * 请求参数没有
    * 返回结果，全部用户使用List集合
    *
    */
   /* @GetMapping("/findAll")
    public List<User> findAll(){

        return service.findAll();
    }*/
    /*
    * url地址/user/login
    * 得到的参数是一个个json串
    * 返回一个结果 SysResult 对象
    *业务需求，用户登录成功，返回秘钥 token
    *
    */
    @PostMapping("/login")
    public SysResult login(@RequestBody User user){
//springboot提供的字符判断字符是否为空的方法StringUtils.hasLength(token)
    String  token =service.login(user);
        if (StringUtils.hasLength(token)){
           //如果数据有值，返回成功
            return SysResult.success(token);
        }


        return SysResult.fail();

    }
    /*前端请求路径/user/list
    需求：利用分页展现user的数据信息
    url： /user/list
   参数：三个//post和put 需要加注解
   返回值：sysresult对象（pageresult对象）
    */
     @GetMapping("/list")
    public SysResult getUserList(PageResult pageResult){

     pageResult=service.getUserList(pageResult);

    return  SysResult.success(pageResult);
    }

    /*根据id修改用户的状态信息
    请求路径 /user/status/{id}/{status}
    返回对象 SysResult

    * */

    @PutMapping("/status/{id}/{status}")
    public SysResult updateStatus(User user){

        service.updateStatus(user);


       return SysResult.success();
    }

    /*
    请求路径 /user/addUser
    请求类型 POST
     请求参数: 整个form表单数据
    实现用户新增，设定状态true 创建时间 修改时间
    * */
   @PostMapping("/addUser")
   public SysResult addUser(@RequestBody User user){

       service.addUser(user);
       return SysResult.success();

}

/*
获取用户id
请求路径: /user/{Id}
请求类型: GET
返回值: SysResult对象
*/
    @GetMapping("/{id}")
      public SysResult selectId(@PathVariable Integer id){

      User user1=service.selectId(id);

        System.out.println(user1);
      return SysResult.success(user1);
  }


  /*
   根据用户ID更新数据
请求路径: /user/updateUser
请求类型: PUT
  * */
    @PutMapping("/updateUser")
    public SysResult updateUser(@RequestBody User user){

        service.updateUser(user);
        return SysResult.success();
    }
    @DeleteMapping("/{id}")
    public SysResult deleteById( @PathVariable Integer id){

       /* try {
            service.deleteById(id);
            return SysResult.success();
        }catch (Exception e){
            //打印异常,我们不能返回异常信息给用户。可以返回失败的类给用户提示
            e.printStackTrace();
            return SysResult.fail();

        }*/

        service.deleteById(id);
        return SysResult.success();
    }


}
